/*==============================================================*/
/* DBMS name:      Microsoft SQL Server 2008                    */
/* Created on:     15/05/2013 09:21:59 p.m.                     */
/*==============================================================*/


if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('ASIGNATURA') and o.name = 'FK_ASIGNATU_INS_ASI_INSCRIPC')
alter table ASIGNATURA
   drop constraint FK_ASIGNATU_INS_ASI_INSCRIPC
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('CAR_PRO') and o.name = 'FK_CAR_PRO_CAR_PRO_CAR_ACA')
alter table CAR_PRO
   drop constraint FK_CAR_PRO_CAR_PRO_CAR_ACA
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('CAR_PRO') and o.name = 'FK_CAR_PRO_CAR_PRO2_PROFESOR')
alter table CAR_PRO
   drop constraint FK_CAR_PRO_CAR_PRO2_PROFESOR
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('GRUPO') and o.name = 'FK_GRUPO_ASIGNATUR_ASIGNATU')
alter table GRUPO
   drop constraint FK_GRUPO_ASIGNATUR_ASIGNATU
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('GRUPO') and o.name = 'FK_GRUPO_GRUPO_CAR_CAR_ACA')
alter table GRUPO
   drop constraint FK_GRUPO_GRUPO_CAR_CAR_ACA
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('GRUPO_ESPACIO') and o.name = 'FK_GRUPO_ES_GRUPO_ESP_GRUPO')
alter table GRUPO_ESPACIO
   drop constraint FK_GRUPO_ES_GRUPO_ESP_GRUPO
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('GRUPO_ESPACIO') and o.name = 'FK_GRUPO_ES_GRUPO_ESP_ESPACIOF')
alter table GRUPO_ESPACIO
   drop constraint FK_GRUPO_ES_GRUPO_ESP_ESPACIOF
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('INSCRI_ESTU') and o.name = 'FK_INSCRI_E_INSCRI_ES_INSCRIPC')
alter table INSCRI_ESTU
   drop constraint FK_INSCRI_E_INSCRI_ES_INSCRIPC
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('INSCRI_ESTU') and o.name = 'FK_INSCRI_E_INSCRI_ES_ESTUDIAN')
alter table INSCRI_ESTU
   drop constraint FK_INSCRI_E_INSCRI_ES_ESTUDIAN
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('ASIGNATURA')
            and   name  = 'INS_ASI_FK'
            and   indid > 0
            and   indid < 255)
   drop index ASIGNATURA.INS_ASI_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('ASIGNATURA')
            and   type = 'U')
   drop table ASIGNATURA
go

if exists (select 1
            from  sysobjects
           where  id = object_id('BITACORA')
            and   type = 'U')
   drop table BITACORA
go

if exists (select 1
            from  sysobjects
           where  id = object_id('CAR_ACA')
            and   type = 'U')
   drop table CAR_ACA
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('CAR_PRO')
            and   name  = 'CAR_PRO2_FK'
            and   indid > 0
            and   indid < 255)
   drop index CAR_PRO.CAR_PRO2_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('CAR_PRO')
            and   name  = 'CAR_PRO_FK'
            and   indid > 0
            and   indid < 255)
   drop index CAR_PRO.CAR_PRO_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('CAR_PRO')
            and   type = 'U')
   drop table CAR_PRO
go

if exists (select 1
            from  sysobjects
           where  id = object_id('CONTROL_B')
            and   type = 'U')
   drop table CONTROL_B
go

if exists (select 1
            from  sysobjects
           where  id = object_id('ESPACIOFISICO')
            and   type = 'U')
   drop table ESPACIOFISICO
go

if exists (select 1
            from  sysobjects
           where  id = object_id('ESTUDIANTE')
            and   type = 'U')
   drop table ESTUDIANTE
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('GRUPO')
            and   name  = 'GRUPO_CAR_FK'
            and   indid > 0
            and   indid < 255)
   drop index GRUPO.GRUPO_CAR_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('GRUPO')
            and   name  = 'ASIGNATURA_GRUPO_FK'
            and   indid > 0
            and   indid < 255)
   drop index GRUPO.ASIGNATURA_GRUPO_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('GRUPO')
            and   type = 'U')
   drop table GRUPO
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('GRUPO_ESPACIO')
            and   name  = 'GRUPO_ESPACIO2_FK'
            and   indid > 0
            and   indid < 255)
   drop index GRUPO_ESPACIO.GRUPO_ESPACIO2_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('GRUPO_ESPACIO')
            and   name  = 'GRUPO_ESPACIO_FK'
            and   indid > 0
            and   indid < 255)
   drop index GRUPO_ESPACIO.GRUPO_ESPACIO_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('GRUPO_ESPACIO')
            and   type = 'U')
   drop table GRUPO_ESPACIO
go

if exists (select 1
            from  sysobjects
           where  id = object_id('INSCRIPCION')
            and   type = 'U')
   drop table INSCRIPCION
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('INSCRI_ESTU')
            and   name  = 'INSCRI_ESTU2_FK'
            and   indid > 0
            and   indid < 255)
   drop index INSCRI_ESTU.INSCRI_ESTU2_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('INSCRI_ESTU')
            and   name  = 'INSCRI_ESTU_FK'
            and   indid > 0
            and   indid < 255)
   drop index INSCRI_ESTU.INSCRI_ESTU_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('INSCRI_ESTU')
            and   type = 'U')
   drop table INSCRI_ESTU
go

if exists (select 1
            from  sysobjects
           where  id = object_id('PROFESOR')
            and   type = 'U')
   drop table PROFESOR
go

/*==============================================================*/
/* Table: ASIGNATURA                                            */
/*==============================================================*/
create table ASIGNATURA (
   ASI_ID               int                  not null,
   ASI_NOMBRE           varchar(20)          not null,
   INS_ID               int                  null,
   ASI_HORA             datetime             null,
   ASI_CREDITOS         numeric(1)           null,
   ASI_TIPO             varchar(256)         null,
   constraint PK_ASIGNATURA primary key nonclustered (ASI_ID, ASI_NOMBRE)
)
go

/*==============================================================*/
/* Index: INS_ASI_FK                                            */
/*==============================================================*/
create index INS_ASI_FK on ASIGNATURA (
INS_ID ASC
)
go

/*==============================================================*/
/* Table: BITACORA                                              */
/*==============================================================*/
create table BITACORA (
   BIT_ID               int                  not null,
   BIT_TABLA            varchar(20)          null,
   BIT_OPERACION        varchar(10)          null,
   BIT_USUARIO          varchar(30)          null,
   BIT_MAQUINA          varchar(50)          null,
   BIT_FECHA            datetime             null,
   BIT_DATOS            varchar(50)          null,
   constraint PK_BITACORA primary key nonclustered (BIT_ID)
)
go

/*==============================================================*/
/* Table: CAR_ACA                                               */
/*==============================================================*/
create table CAR_ACA (
   CAR_ID               int                  not null,
   CAR_ANO              datetime             null,
   CAR_SEMES            datetime             null,
   constraint PK_CAR_ACA primary key nonclustered (CAR_ID)
)
go

/*==============================================================*/
/* Table: CAR_PRO                                               */
/*==============================================================*/
create table CAR_PRO (
   CAR_ID               int                  not null,
   PRO_ID               int                  not null,
   constraint PK_CAR_PRO primary key (CAR_ID, PRO_ID)
)
go

/*==============================================================*/
/* Index: CAR_PRO_FK                                            */
/*==============================================================*/
create index CAR_PRO_FK on CAR_PRO (
CAR_ID ASC
)
go

/*==============================================================*/
/* Index: CAR_PRO2_FK                                           */
/*==============================================================*/
create index CAR_PRO2_FK on CAR_PRO (
PRO_ID ASC
)
go

/*==============================================================*/
/* Table: CONTROL_B                                             */
/*==============================================================*/
create table CONTROL_B (
   CRTL_ID              int                  null,
   CRTL_OPERACION       varchar(10)          null,
   CRTL_USUARIO         varchar(30)          null,
   CRTL_MAQUINA         varchar(50)          null,
   CRTL_FECHA           datetime             null
)
go

/*==============================================================*/
/* Table: ESPACIOFISICO                                         */
/*==============================================================*/
create table ESPACIOFISICO (
   ESP_ID               int                  not null,
   ESP_NOMBRE           varchar(50)          not null,
   constraint PK_ESPACIOFISICO primary key nonclustered (ESP_ID, ESP_NOMBRE)
)
go

/*==============================================================*/
/* Table: ESTUDIANTE                                            */
/*==============================================================*/
create table ESTUDIANTE (
   ESTU_ID              int                  not null,
   ESTU_NOMBRES         varchar(50)          null,
   ESTU_APELLIDOS       varchar(50)          null,
   ESTU_TELEFONO        numeric(7)           null,
   ESTU_GENERO          varchar(10)          null,
   ESTU_DIRECCION       varchar(20)          null,
   ESTU_CELULAR         numeric(10)          null,
   ESTU_NACIMIENTO      datetime             null,
   ESTU_INGRESOU        datetime             null,
   ESTU_CODIGO          int                  not null,
   ESTU_PROGRAMA        varchar(20)          null,
   constraint PK_ESTUDIANTE primary key nonclustered (ESTU_ID, ESTU_CODIGO)
)
go

/*==============================================================*/
/* Table: GRUPO                                                 */
/*==============================================================*/
create table GRUPO (
   GRUPO_ID             int                  not null,
   CAR_ID               int                  null,
   ASI_ID               int                  null,
   ASI_NOMBRE           varchar(20)          null,
   constraint PK_GRUPO primary key nonclustered (GRUPO_ID)
)
go

/*==============================================================*/
/* Index: ASIGNATURA_GRUPO_FK                                   */
/*==============================================================*/
create index ASIGNATURA_GRUPO_FK on GRUPO (
ASI_ID ASC,
ASI_NOMBRE ASC
)
go

/*==============================================================*/
/* Index: GRUPO_CAR_FK                                          */
/*==============================================================*/
create index GRUPO_CAR_FK on GRUPO (
CAR_ID ASC
)
go

/*==============================================================*/
/* Table: GRUPO_ESPACIO                                         */
/*==============================================================*/
create table GRUPO_ESPACIO (
   GRUPO_ID             int                  not null,
   ESP_ID               int                  not null,
   ESP_NOMBRE           varchar(50)          not null,
   constraint PK_GRUPO_ESPACIO primary key (GRUPO_ID, ESP_ID, ESP_NOMBRE)
)
go

/*==============================================================*/
/* Index: GRUPO_ESPACIO_FK                                      */
/*==============================================================*/
create index GRUPO_ESPACIO_FK on GRUPO_ESPACIO (
GRUPO_ID ASC
)
go

/*==============================================================*/
/* Index: GRUPO_ESPACIO2_FK                                     */
/*==============================================================*/
create index GRUPO_ESPACIO2_FK on GRUPO_ESPACIO (
ESP_ID ASC,
ESP_NOMBRE ASC
)
go

/*==============================================================*/
/* Table: INSCRIPCION                                           */
/*==============================================================*/
create table INSCRIPCION (
   INS_ID               int                  not null,
   INS_ANO              datetime             null,
   INS_SEMES            datetime             null,
   INS_NOTA             numeric(2)           null
      constraint CKC_INS_NOTA_INSCRIPC check (INS_NOTA is null or (INS_NOTA between 0 and 50)),
   constraint PK_INSCRIPCION primary key nonclustered (INS_ID)
)
go

/*==============================================================*/
/* Table: INSCRI_ESTU                                           */
/*==============================================================*/
create table INSCRI_ESTU (
   INS_ID               int                  not null,
   ESTU_ID              int                  not null,
   ESTU_CODIGO          int                  not null,
   constraint PK_INSCRI_ESTU primary key (INS_ID, ESTU_ID, ESTU_CODIGO)
)
go

/*==============================================================*/
/* Index: INSCRI_ESTU_FK                                        */
/*==============================================================*/
create index INSCRI_ESTU_FK on INSCRI_ESTU (
INS_ID ASC
)
go

/*==============================================================*/
/* Index: INSCRI_ESTU2_FK                                       */
/*==============================================================*/
create index INSCRI_ESTU2_FK on INSCRI_ESTU (
ESTU_ID ASC,
ESTU_CODIGO ASC
)
go

/*==============================================================*/
/* Table: PROFESOR                                              */
/*==============================================================*/
create table PROFESOR (
   PRO_ID               int                  not null,
   PRO_NOMBRES          varchar(50)          not null,
   PRO_APELLIDOS        varchar(50)          not null,
   PRO_SUELDO           money                null,
   PRO_TELEFONO         numeric(7)           not null,
   PRO_CELULAR          numeric(10)          not null,
   PRO_DIRECCION        varchar(20)          null,
   PRO_NACIMIENTO       datetime             not null,
   PRO_GENERO           varchar(10)          not null,
   PRO_GRADO            datetime             not null,
   PRO_INGRESOU         datetime             not null,
   constraint PK_PROFESOR primary key nonclustered (PRO_ID)
)
go

alter table ASIGNATURA
   add constraint FK_ASIGNATU_INS_ASI_INSCRIPC foreign key (INS_ID)
      references INSCRIPCION (INS_ID)
go

alter table CAR_PRO
   add constraint FK_CAR_PRO_CAR_PRO_CAR_ACA foreign key (CAR_ID)
      references CAR_ACA (CAR_ID)
go

alter table CAR_PRO
   add constraint FK_CAR_PRO_CAR_PRO2_PROFESOR foreign key (PRO_ID)
      references PROFESOR (PRO_ID)
go

alter table GRUPO
   add constraint FK_GRUPO_ASIGNATUR_ASIGNATU foreign key (ASI_ID, ASI_NOMBRE)
      references ASIGNATURA (ASI_ID, ASI_NOMBRE)
go

alter table GRUPO
   add constraint FK_GRUPO_GRUPO_CAR_CAR_ACA foreign key (CAR_ID)
      references CAR_ACA (CAR_ID)
go

alter table GRUPO_ESPACIO
   add constraint FK_GRUPO_ES_GRUPO_ESP_GRUPO foreign key (GRUPO_ID)
      references GRUPO (GRUPO_ID)
go

alter table GRUPO_ESPACIO
   add constraint FK_GRUPO_ES_GRUPO_ESP_ESPACIOF foreign key (ESP_ID, ESP_NOMBRE)
      references ESPACIOFISICO (ESP_ID, ESP_NOMBRE)
go

alter table INSCRI_ESTU
   add constraint FK_INSCRI_E_INSCRI_ES_INSCRIPC foreign key (INS_ID)
      references INSCRIPCION (INS_ID)
go

alter table INSCRI_ESTU
   add constraint FK_INSCRI_E_INSCRI_ES_ESTUDIAN foreign key (ESTU_ID, ESTU_CODIGO)
      references ESTUDIANTE (ESTU_ID, ESTU_CODIGO)
go

